PushNotifications - JMS
When an event is triggered in Push Notifications, OIPA will look into the database for Downstream application details. To receive messages from OIPA on the occurrence of an event and to communicate with OIPA using JMS protocol, the downstream application needs to 'POST' its application and security details using REST API's. The protocol is mentioned below:
Mandatory Details
"providerUrl": "http://XXX.XXX.X.XX:XXXX",
"connectionFactory": "DownstreamConnectionFactory",
"destinationName": "DownstreamMessageQueue"
Optional Details
"deliveryMode": "DeliveryMode.PERSISTENT",
"priorityLevel": 1,
"timeToLive": "500",
"acknowledgementMode": "AUTO_ACKNOWLEDGE"
Default Values for Optional Details
deliveryMode = "DeliveryMode.PERSISTENT";
acknowledgementMode = "AUTO_ACKNOWLEDGE"
priorityLevel = 4;
timeToLive = "6000";
Security Details:
"userName": "",
"password": ""
XML Schema
<PushNotifications>
<Templates>
<Template ID="[name]">
<Parameters>
<Parameter NAME="[name]">[field | variable]</Parameter>
<Parameter>...</Parameter>
</Parameters>
<JSTLMessage><[parameter name]>[parameter attribute name | literal]</[parameter name]><[parameter name]>...</[parameter name]>
</JSTLMessage>
</Template>
<Template>
...
</Template>
</Templates>
<PushNotification EVENTNAME="[name]">
<Message ID="">
<Tests>
<Test>[condition]</Test>
<Test>...</Test>
</Tests>
<AsEventMessage xmlns="[name space]">
<JSTLTemplate>[id]</JSTLTemplate>
<JSTLTemplate>...</JSTLTemplate>
<JSTLMessage>
<Parameters>
<Parameter NAME="[name]" DATATYPE="[TEXT | INTEGER | DECIMAL | DATE | BOOLEAN | CURRENCY | BIGTEXT]" >[]</Parameter>
<Parameter>...</Parameter>
</Parameters><[parameter name]>[parameter attribute name | literal]</[parameter name]><[parameter name]>...</[parameter name]>
</JSTLMessage>
</AsEventMessage>
</Message>
<OnTransactionFailure>[failure message id]</OnTransactionFailure>
</PushNotification>
<OnTransactionFailure>
<Message ID="[failure message id]">
<AsEventMessage xmlns="[name space]">
<JSTLTemplate>[id]</JSTLTemplate>
<JSTLTemplate>...</JSTLTemplate>
<JSTLMessage>
<Parameters>
<Parameter NAME="[name]" DATATYPE="[TEXT | INTEGER | DECIMAL | DATE | BOOLEAN | CURRENCY | BIGTEXT]" >[]</Parameter>
<Parameter>...</Parameter>
</Parameters><[parameter name]>[parameter attribute name | literal]</[parameter name]><[parameter name]>...</[parameter name]>
</JSTLMessage>
</AsEventMessage>
</Message>
<Message>
...
</Message>
</OnTransactionFailure>
<OnPushFailure>
<RollbackTransaction>[Yes | No]</RollbackTransaction>
<CreateBusinessError>[Yes | No]</CreateBusinessError>
</OnPushFailure>
</PushNotifications>
XML Example
<PushNotifications>
<Templates>
<Template id='Header'>
<Parameters>
<!-- MessageGuid and MessageDateTime will be auto generated -->
<Parameter NAME= "MsgGuid" DATATYPE="Text">MsgGUID</Parameter>
<Parameter NAME= "EFFdate" DATATYPE="Date">Effectivedate</Parameter>
<Parameter NAME= "ActGuid" DATATYPE="Text">ActivityGUID</Parameter>
<Parameter NAME= "Datetime" DATATYPE= "Date">ActivityDateTime </Parameter>
<Parameter NAME= "Reverse" DATATYPE = "Text">Reverse</Parameter>
</Parameters>
<JSTLMessage>
<MsgGuid>[MsgGuid]</MsgGuid>
<EffectiveDate>[EFFdate]</EffectiveDate>
<ActivityDateTime>[Datetime]
</ActivityDateTime>
<ActivityGuid>[ActGuid] </ActivityGuid>
<Reverse>[Reverse]</Reverse>
</JSTLMessage>
</Template>
</Templates>
<PushNotification EventName='Billing'>
<Tests>
<Test CONDITIONListBill='True'>
<Template> Header </Template>
<Message ID='BillingMsg1'>
<Parameters>
<Parameter NAME= "MsgGuid" DATATYPE ="Text">MsgGuid </Parameter>
<Parameter NAME= "TransactionName" DATATYPE ="Text">TransactionName </Parameter>
<Parameter NAME= "Segment" DATATYPE ="Text">Segment</Parameter>
<Parameter NAME= "TransactionCount" DATATYPE ="Integer">TransactionCount</Parameter>
<Parameter NAME= "Event" DATATYPE ="Text">Event</Parameter>
</Parameters>
<JSTLMessage>
<Event>[Event]</Event>
<MSGGUId>[MsgGuid]</MSGGUId>
<!-- A transaction Map with Segment Object Array -->
<forEach items="[transactionMap]" var="eachTransaction">
<Transaction name="[eachTransaction.key]">
<forEach items="[ eachTransaction.value]" var="eachSegment"></forEach>
<Segment name="[eachSegment.name]">
<BillingTotal>[eachSegment.total]</BillingTotal>
</Segment>
</Transaction>
</forEach>
</JSTLMessage>
</Message>
</Test>
</Tests>
</PushNotification>
<OnTransactionFailure>
<Message>
<Parameters>
<Parameter NAME= "MsgGuid" DATATYPE ="Text">MsgGUID</Parameter>
<Parameter NAME= "EFFdate" DATATYPE ="Date">ActivityEffectivedate</Parameter>
<Parameter NAME= "PaidToDate" DATATYPE ="Date">PaidToDate</Parameter>
<Parameter NAME= "Fee" DATATYPE ="Integer">PolicyFee</Parameter>
</Parameters>
<JSTLMessage>
<MsgGuid>[MsgGuid]</MsgGuid>
<EffectiveDate>[EFFdate]</EffectiveDate>
<ActivityDateTime>[Datetime]
</ActivityDateTime>
<DueDate>[PaidToDate]</DueDate>
<PolicyFee>[Fee]</PolicyFee>
</JSTLMessage>
</Message>
</OnTransactionFailure>
<OnPushFailure>
<RollbackTransaction>Yes</RollbackTransaction>
<CreateBusinessError>Yes</CreateBusinessError>
</OnPushFailure>
</PushNotifications>
Output Example
<MsgGuid> 9B5AA155-4F7B-46AC-9A92-A253BE14C6B7</MsgGuid> <EffectiveDate> 2016-11-01</EffectiveDate> <ActivityDateTime>2018-07-18T09:32:12.643-05:00 <ActivityDateTime> <ActivityGuid> AB4016A2-573D-4918-A94D-1F786725B717 </ActivityGuid> <Event>Billing</Event> <MsgId>BillingMsg1</MsgId> <Transaction name="Transaction2"> <Segment name="Segment21"> <BillingTotal>111</BillingTotal> </Segment> <Segment name="Segment22"> <BillingTotal>222</BillingTotal> </Segment> </Transaction> <Transaction name="Transaction1"> <Segment name="Segment11"> <BillingTotal>100</BillingTotal> </Segment> <Segment name="Segment12"> <BillingTotal>200</BillingTotal> </Segment> </Transaction>
Output - OnTransactionFailure
<MsgGuid> 9B5AA155-4F7B-46AC-9A92-A253BE14C6B7</MsgGuid> <EffectiveDate> 2016-11-01</EffectiveDate> <ActivityDateTime>2018-07-18T09:32:12.643-05:00 </ActivityDateTime> <ActivityGuid> AB4016A2-573D-4918-A94D-1F786725B717</ActivityGuid> <ActivityStatus>Pending</ActivityStatus>
Example of a JSTL Template
<Message>
<Parameters>
<Parameter Name=Eventname DATATYPE ="Text">Event</Parameter>
<Parameter Name=MsgGuid DATATYPE ="Text"> MsgGUID</Parameter>
<Parameter Name=EffectiveDate DATATYPE ="Date">EffDate</Parameter>
<Parameter Name=PolicyNumber DATATYPE ="Integer>PolNumber</Parameter>
<Parameter Name=PaidToDate DATATYPE ="Date"> PaidToDate </Parameter>
<Parameter Name=ModalPremium DATATYPE ="Integer"> ModalPremium </Parameter>
<Parameter Name=EFTModalPremium DATATYPE ="Integer"> EFTModalPremium </Parameter>
<Parameter Name=AnnualDiscount DATATYPE ="Integer"> AnnualDiscount </Parameter>
</Parameters>
<JSTLMessage><Event EVENTNAME=[EventName]></Event>
<MsgGUID>[MesgGuid]</MsgGUID>
<EffectiveDate> [EffectiveDate]</EffectiveDate>
<PolicyNumber>[PolicyNumber]</PolicyNumber>
<PaidToDate>[PaidToDate]</PaidToDate>
<Premium>
<ModalPremium>[ModalPremium]</ModalPremium>
<EFTModalPremium>[EFTModalPremium]</EFTModalPremium>
<AnnualDiscount>[AnnualDiscount]</AnnualDiscount>
</Premium>
</JSTLMessage>
</Message>
Output
<Message>
<Event EVENTNAME="Billing">
<MsgGUID> 9B5AA155-4F7B-46AC-9A92-A253BE14C6B7</MsgGUID>
<EffectiveDate> 2016-11-01</EffectiveDate>
<PolicyNumber>A000075449 </PolicyNumber>
<PaidToDate>2017-11-01 </PaidToDate>
<Premium>
<ModalPremium>380 </ModalPremium>
<EFTModalPremium>400 </EFTModalPremium>
<AnnualDiscount> 20 </AnnualDiscount>
</Premium>
</Event>
</Message>